-- 计算是否应该计费
local key = KEYS[1]
-- 心跳总次数
local key2 = KEYS[2]
-- 累计计费次数
local key3 = KEYS[3]
local total = tonumber(ARGV[1])
local expiry = tonumber(ARGV[2])
-- 记录上报计费
local current = redis.call('INCR', key)
-- 记录上报的总次数
local current2 = redis.call('INCR', key2)
-- 计费的总次数
local current3 = 0;
--redis.log(redis.LOG_DEBUG, "total type is:" .. type(total))
if current >= total then
    redis.log(redis.LOG_DEBUG, "current >= total")
    -- 计次到2说明完成一轮计费,清除计费,并重新设置过期时间
    redis.call('SET', key, 0)
    redis.call('PEXPIRE', key, expiry)
    -- 累计计费次数,返回true需要计费
    current3 = redis.call('INCR', key3)
    return { 1, current2, current3 }
else
    redis.log(redis.LOG_DEBUG, "current < total")
    -- 累计计费次数,返回false不需要计费
    current3 = redis.call('GET', key3)
    return { 0, current2, current3 }
end
